using System;
using System.Collections.Generic;

using PMServiceDesk.DataType;
using PMServiceDesk.DataAccess;
using PMServiceDesk.Utils.ManejoDatos;

namespace PMServiceDesk.BusinessLogic
{
    public class DocumentoPaqueteTrabajoLogic
    {
        #region Variables

        private DocumentoPaqueteTrabajoData _documentoPaqueteTrabajoData;

        #endregion

        #region Constructores

        public DocumentoPaqueteTrabajoLogic()
        {
            _documentoPaqueteTrabajoData = new DocumentoPaqueteTrabajoData();
        }

        #endregion

        #region Metodos

        public DocumentoPaqueteTrabajoType CargarPorId(string id)
        {
            _documentoPaqueteTrabajoData.FiltrarPorId(id);

            return _documentoPaqueteTrabajoData.Cargar();
        }

        public DocumentoPaqueteTrabajoType CargarVistaPorId(string id)
        {
            _documentoPaqueteTrabajoData.FiltrarPorId(id);

            return _documentoPaqueteTrabajoData.CargarListaVista()[0];
        }

        public void Grabar(DocumentoPaqueteTrabajoType documentoPaqueteTrabajo)
        {
            _documentoPaqueteTrabajoData.Grabar(documentoPaqueteTrabajo);
        }

        public void Eliminar(string id)
        {
            _documentoPaqueteTrabajoData.Eliminar(id);
        }

        public List<DocumentoPaqueteTrabajoType> CargarExplorador(string paqueteTrabajoId)
        {
            if(paqueteTrabajoId != "") _documentoPaqueteTrabajoData.FiltrarPorPaqueteTrabajoId(paqueteTrabajoId);

            return _documentoPaqueteTrabajoData.CargarListaVista();
        }

        public List<DocumentoPaqueteTrabajoType> CargarExploradorPaginado(DocumentoPaqueteTrabajoType registroBusqueda, int paginaActual = 0, int cantidadMostrar = 0, string orderBy = "")
        {
            _documentoPaqueteTrabajoData.FiltrarPorPaqueteTrabajoId(registroBusqueda.PaqueteTrabajoId);

            if (registroBusqueda.NombreArchivo != "") _documentoPaqueteTrabajoData.FiltrarPorNombreArchivo(registroBusqueda.NombreArchivo);
            if (registroBusqueda.UsuarioRegistro != "") _documentoPaqueteTrabajoData.FiltrarPorUsuarioRegistro(registroBusqueda.UsuarioRegistro);
            if (registroBusqueda.FechaRegistro_Format != "") _documentoPaqueteTrabajoData.FiltrarPorFechaRegistroExacta(ConvertFormat.Char_To_Date(registroBusqueda.FechaRegistro_Format));
            if (registroBusqueda.EstadoPaqueteTrabajo != "") _documentoPaqueteTrabajoData.FiltrarPorEstadoPaqueteTrabajo(registroBusqueda.EstadoPaqueteTrabajo);

            return _documentoPaqueteTrabajoData.CargarListaVista(paginaActual, cantidadMostrar, orderBy);
        }
        #endregion
    }
}
